* @ingroup SpecialPage
*/
-use MediaWiki\Block\BlockRestriction;
use MediaWiki\Block\Restriction\PageRestriction;
use MediaWiki\Block\Restriction\NamespaceRestriction;
+use MediaWiki\MediaWikiServices;
/**
* A special page that allows users with 'block' right to block users from
* @return array
*/
protected function getFormFields() {
- global $wgBlockAllowsUTEdit;
+ $conf = $this->getConfig();
+ $enablePartialBlocks = $conf->get( 'EnablePartialBlocks' );
+ $blockAllowsUTEdit = $conf->get( 'BlockAllowsUTEdit' );
$this->getOutput()->enableOOUI();
$suggestedDurations = self::getSuggestedDurations();
- $conf = $this->getConfig();
- $enablePartialBlocks = $conf->get( 'EnablePartialBlocks' );
-
$a = [];
$a['Target'] = [
];
}
- if ( $wgBlockAllowsUTEdit ) {
+ if ( $blockAllowsUTEdit ) {
$a['DisableUTEdit'] = [
'type' => 'check',
'label-message' => 'ipb-disableusertalk',
'cssclass' => 'mw-block-confirm',
];
- // Block Id if a block already exists matching the target
- $a['BlockId'] = [
- 'type' => 'hidden',
- 'default' => '',
- ];
-
- // Has the form been submitted
- $a['WasPosted'] = [
- 'type' => 'hidden',
- 'default' => '',
- ];
-
$this->maybeAlterFormDefaults( $a );
// Allow extensions to add more fields
$block = Block::newFromTarget( $this->target );
- if ( $block instanceof Block && !$block->mAuto # The block exists and isn't an autoblock
- && ( $this->type != Block::TYPE_RANGE # The block isn't a rangeblock
- || $block->getTarget() == $this->target ) # or if it is, the range is what we're about to block
+ // Populate fields if there is a block that is not an autoblock; if it is a range
+ // block, only populate the fields if the range is the same as $this->target
+ if ( $block instanceof Block && $block->getType() !== Block::TYPE_AUTO
+ && ( $this->type != Block::TYPE_RANGE
+ || $block->getTarget() == $this->target )
) {
$fields['HardBlock']['default'] = $block->isHardblock();
$fields['CreateAccount']['default'] = $block->isCreateAccountBlocked();
}
if ( isset( $fields['HideUser'] ) ) {
- $fields['HideUser']['default'] = $block->mHideName;
+ $fields['HideUser']['default'] = $block->getHideName();
}
if ( isset( $fields['DisableUTEdit'] ) ) {
// If the username was hidden (ipb_deleted == 1), don't show the reason
// unless this user also has rights to hideuser: T37839
- if ( !$block->mHideName || $this->getUser()->isAllowed( 'hideuser' ) ) {
- $fields['Reason']['default'] = $block->mReason;
+ if ( !$block->getHideName() || $this->getUser()->isAllowed( 'hideuser' ) ) {
+ $fields['Reason']['default'] = $block->getReason();
} else {
$fields['Reason']['default'] = '';
}
$fields['Confirm']['default'] = 1;
}
- if ( $block->mExpiry == 'infinity' ) {
+ if ( $block->getExpiry() == 'infinity' ) {
$fields['Expiry']['default'] = 'infinite';
} else {
- $fields['Expiry']['default'] = wfTimestamp( TS_RFC2822, $block->mExpiry );
+ $fields['Expiry']['default'] = wfTimestamp( TS_RFC2822, $block->getExpiry() );
}
- $fields['BlockId']['default'] = $block->getId();
-
$this->alreadyBlocked = true;
$this->preErrors[] = [ 'ipb-needreblock', wfEscapeWikiText( (string)$block->getTarget() ) ];
}
- if ( $this->getRequest()->wasPosted() ) {
- $fields['WasPosted']['default'] = true;
+ if ( $this->alreadyBlocked || $this->getRequest()->wasPosted()
+ || $this->getRequest()->getCheck( 'wpCreateAccount' )
+ ) {
+ $this->getOutput()->addJsConfigVars( 'wgCreateAccountDirty', true );
}
# We always need confirmation to do HideUser
* the HTMLForm
* @param WebRequest|null $request Optionally try and get data from a request too
* @return array [ User|string|null, Block::TYPE_ constant|null ]
+ * @phan-return array{0:User|string|null,1:int|null}
*/
public static function getTargetAndType( $par, WebRequest $request = null ) {
$i = 0;
$block = new Block();
$block->setTarget( $target );
$block->setBlocker( $performer );
- $block->mReason = $data['Reason'][0];
- $block->mExpiry = $expiryTime;
+ $block->setReason( $data['Reason'][0] );
+ $block->setExpiry( $expiryTime );
$block->isCreateAccountBlocked( $data['CreateAccount'] );
$block->isUsertalkEditAllowed( !$wgBlockAllowsUTEdit || !$data['DisableUTEdit'] );
$block->isEmailBlocked( $data['DisableEmail'] );
$block->isHardblock( $data['HardBlock'] );
$block->isAutoblocking( $data['AutoBlock'] );
- $block->mHideName = $data['HideUser'];
+ $block->setHideName( $data['HideUser'] );
if ( $isPartialBlock ) {
$block->isSitewide( false );
}
# If the name was hidden and the blocking user cannot hide
# names, then don't allow any block changes...
- if ( $currentBlock->mHideName && !$performer->isAllowed( 'hideuser' ) ) {
+ if ( $currentBlock->getHideName() && !$performer->isAllowed( 'hideuser' ) ) {
return [ 'cant-see-hidden-user' ];
}
$priorBlock = clone $currentBlock;
$currentBlock->isHardblock( $block->isHardblock() );
$currentBlock->isCreateAccountBlocked( $block->isCreateAccountBlocked() );
- $currentBlock->mExpiry = $block->mExpiry;
+ $currentBlock->setExpiry( $block->getExpiry() );
$currentBlock->isAutoblocking( $block->isAutoblocking() );
- $currentBlock->mHideName = $block->mHideName;
+ $currentBlock->setHideName( $block->getHideName() );
$currentBlock->isEmailBlocked( $block->isEmailBlocked() );
$currentBlock->isUsertalkEditAllowed( $block->isUsertalkEditAllowed() );
- $currentBlock->mReason = $block->mReason;
+ $currentBlock->setReason( $block->getReason() );
if ( $enablePartialBlocks ) {
// Maintain the sitewide status. If partial blocks is not enabled,
$currentBlock->isSitewide( $block->isSitewide() );
// Set the block id of the restrictions.
+ $blockRestrictionStore = MediaWikiServices::getInstance()->getBlockRestrictionStore();
$currentBlock->setRestrictions(
- BlockRestriction::setBlockId( $currentBlock->getId(), $restrictions )
+ $blockRestrictionStore->setBlockId( $currentBlock->getId(), $restrictions )
);
}
$logaction = 'reblock';
# Unset _deleted fields if requested
- if ( $currentBlock->mHideName && !$data['HideUser'] ) {
+ if ( $currentBlock->getHideName() && !$data['HideUser'] ) {
RevisionDeleteUser::unsuppressUserName( $target, $userId );
}
# If hiding/unhiding a name, this should go in the private logs
- if ( (bool)$currentBlock->mHideName ) {
+ if ( (bool)$currentBlock->getHideName() ) {
$data['HideUser'] = true;
}
*
* @todo strtotime() only accepts English strings. This means the expiry input
* can only be specified in English.
- * @see https://secure.php.net/manual/en/function.strtotime.php
+ * @see https://www.php.net/manual/en/function.strtotime.php
*
* @param string $expiry Whatever was typed into the form
* @return string|bool Timestamp or 'infinity' or false on error.